home *** CD-ROM | disk | FTP | other *** search
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #include <winb.h>
- #include <te.h>
- #include <fntb.h>
- #include <gui.h>
- #include "igo.h"
- #include "banx.h"
- #include "kiffile.h"
- #include "title.h"
-
- extern int deskTopId;
- extern int ban_windowId;
- extern int note_windowId;
- extern int menuBarId;
-
-
- int judge_dialogId = -1 ;
- int judge_backbuttonId = -1 ;
- int judge_buttonId[2] = -1 ;
- int judge_messageId[4] = -1 ;
-
- int judge_set()
- {
- int b_territory_number, w_territory_number;
-
- title_judge_on();
- kifu_judge(&b_territory_number, &w_territory_number);
- judge_do_set(b_territory_number, w_territory_number);
-
- MMI_SendMessage( ban_windowId, MM_DETACH, 0);
- MMI_SendMessage( note_windowId, MM_DETACH, 0);
- MMI_SendMessage( menuBarId, MM_DETACH, 0);
-
- /* オブジェクトをダイアログに取り付ける */
- MMI_SendMessage( ban_windowId , MM_ATTACH , 1 , deskTopId ) ;
- MMI_SendMessage( judge_dialogId , MM_ATTACH , 1 , deskTopId ) ;
-
- /* オブジェクトを表示する */
- MMI_SendMessage( ban_windowId, MM_SHOW, 0 ) ;
- MMI_SendMessage( judge_dialogId, MM_SHOW, 0 ) ;
-
- MMI_ExecSystem();
-
- return NOERR;
-
-
- }
-
- /* initDataMIJUDGE:judeg_buttonId[0]:MJ_DBUTTONL40の呼び出し関数 */
- int judge_end(kobj, messId, argc, pev, trigger)
- int kobj ;
- int messId ;
- int argc ;
- EVENT *pev ;
- int trigger ;
- {
- title_judge_off();
-
- /* judge_dialogIdで示されるオブジェクトを消す */
- MMI_SendMessage( judge_dialogId, MM_ERASE , 0 ) ;
- /* オブジェクトをダイアログから取り外す */
- MMI_SendMessage( judge_dialogId, MM_DETACH , 0 ) ;
- MMI_SendMessage( note_windowId, MM_DETACH , 0 ) ;
-
- MMI_SendMessage( menuBarId , MM_ATTACH , 1 , deskTopId ) ;
- MMI_SendMessage( note_windowId , MM_ATTACH , 1 , deskTopId ) ;
- MMI_SendMessage( ban_windowId , MM_ATTACH , 1 , deskTopId ) ;
-
- retunrInitMenuFunc();
- comment_dispFunc();
-
- MMI_SetHaltFlag(TRUE);
-
- return NOERR ;
- }
-
- int judge_do_set(int b_territory_number, int w_territory_number)
- {
- int ban_number, kekka, w_num;
- int komi_id, komi_number, hanmoku_id;
- char kachi_chr[5];
- static char judge_message[4][17];
-
- sprintf(judge_message[0], "黒 %4d目%6s", b_territory_number, " ");
- MMI_SendMessage( judge_messageId[0], MM_SETMSG, 1, judge_message[0]);
- sprintf(judge_message[1], "白 %4d目%6s", w_territory_number, " ");
- MMI_SendMessage( judge_messageId[1], MM_SETMSG, 1, judge_message[1]);
- if((ban_number=(b_territory_number-w_territory_number))<0){
- ban_number*=(-1);
- }
- sprintf(judge_message[2], "盤面%4d目%6s", ban_number, " ");
- MMI_SendMessage( judge_messageId[2], MM_SETMSG, 1, judge_message[2]);
-
- title_komiread( &komi_id, &komi_number, &hanmoku_id);
- switch (komi_id){
- case 0:{
- if(hanmoku_id==0){
- kekka=2*(b_territory_number-w_territory_number-komi_number)-1;
- }else{
- kekka=2*(b_territory_number-w_territory_number-komi_number);
- }
- if(kekka>0){
- strcpy(kachi_chr, "黒");
- }else if(kekka<0){
- strcpy(kachi_chr, "白");
- kekka*=(-1);
- }
- break;
- }
- case 1:{
- if(hanmoku_id==0){
- kekka=2*(w_territory_number-b_territory_number-komi_number)-1;
- }else{
- kekka=2*(w_territory_number-b_territory_number-komi_number);
- }
- if(kekka>0){
- strcpy(kachi_chr, "白");
- }else if(kekka<0){
- strcpy(kachi_chr, "黒");
- kekka*=(-1);
- }
- break;
- }
- case 2:{
- kekka=2*(b_territory_number-w_territory_number);
- if(kekka>0){
- strcpy(kachi_chr, "黒");
- }else if(kekka<0){
- strcpy(kachi_chr, "白");
- kekka*=(-1);
- }
- break;
- }
- }
- if(kekka==0){
- sprintf(judge_message[3], "%-4s", "ジゴ");
- }else if(kekka==1){
- sprintf(judge_message[3], "%-4s半目勝ち", kachi_chr);
- }else if((w_num=kekka%2)==1){
- sprintf(judge_message[3], "%-4s%4d目半勝ち", kachi_chr, kekka/2);
- }else{
- sprintf(judge_message[3], "%-4s%4d目勝ち", kachi_chr, kekka/2);
- }
- MMI_SendMessage( judge_messageId[3], MM_SETMSG, 1, judge_message[3]);
-
- return NOERR;
-
- }
-
- int judge_ban_disp()
- {
- WINCTRL *pctrl;
- WINCLIP *pwclp ;
- WINCLIP *pstackVisible ;
- WINCLIP *pstackClip ;
- HYPER hyp ;
- FRAME oFr, sFr, cFr ;
- POINT origin, dspOrigin ;
-
- /* 原点移動 */
- origin.y = origin.x = 0 ;
- MG_PushOrigin(&origin, &dspOrigin) ;
- /* MMI_Openで指定したサイズで設定 */
- MMI_GetControl(&pctrl) ;
- pwclp = WIN_getClipMemory(&pctrl->bound, NULL) ;
- /* WIN_copyClipは省略できない */
- WIN_pushVisible(WIN_copyClip(pwclp), &pstackVisible) ;
- WIN_pushClip(pwclp, &pstackClip) ;
-
- /* ここでMM_SHOWなど描画処理を行う */
- MMI_SendMessage(judge_dialogId, MM_SHOW, 0);
-
- WIN_popClip(pstackClip) ;
- WIN_popVisible(pstackVisible) ;
- MG_PopOrigin(&dspOrigin) ;
-
-
- /* 原点を ban_windowId のユーザ領域の左上に移動 */
- MMI_SendMessage(ban_windowId, MM_GETHYPER, 1, &hyp) ;
- MMI_SendMessage(ban_windowId, MM_GETUSER, 2, &oFr, &sFr) ;
- cFr.lupx = dspOrigin.x = hyp.fr.lupx + oFr.lupx ;
- cFr.lupy = dspOrigin.y = hyp.fr.lupy + oFr.lupy ;
- cFr.rdwx = cFr.lupx + oFr.rdwx -1 ;
- cFr.rdwy = cFr.lupy + oFr.rdwy -1 ;
- MG_PushOrigin(&dspOrigin, &origin) ;
- pwclp = WIN_getClipMemory(&cFr, NULL) ;
- /* WIN_copyClipでクリップのコピーをビジブルの設定に利用する */
-
- WIN_pushVisible(WIN_copyClip(pwclp), &pstackVisible) ;
- WIN_pushClip(pwclp, &pstackClip) ;
- /* ここでWGB 関数などを使用して描画 */
- kifu_disp();
- WIN_popClip(pstackClip) ;
- WIN_popVisible(pstackVisible) ;
- /* 原点を元に戻す */
- MG_PopOrigin(&origin) ;
-
- return NOERR;
- }